// models/House.js
module.exports = (sequelize, DataTypes) => {
    return sequelize.define('House', {
        id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, comment: '房产信息ID' },
        title: { type: DataTypes.STRING, allowNull: false, comment: '标题' },
        content: { type: DataTypes.TEXT, allowNull: false, comment: '房屋描述' },
        rent: { type: DataTypes.FLOAT, allowNull: false, comment: '租金/售价' },
        categoryId: { type: DataTypes.INTEGER, allowNull: false, comment: '分类ID' },
        userId: { type: DataTypes.INTEGER, allowNull: false, comment: '发布者用户ID' },
        
        // 房屋基本信息
        room: { type: DataTypes.INTEGER, allowNull: false, comment: '室' },
        hall: { type: DataTypes.INTEGER, allowNull: false, comment: '厅' },
        loo: { type: DataTypes.INTEGER, allowNull: false, comment: '卫' },
        acreage: { type: DataTypes.FLOAT, allowNull: false, comment: '面积(平方米)' },
        floor: { type: DataTypes.INTEGER, allowNull: true, comment: '楼层' },
        decoration: { type: DataTypes.INTEGER, allowNull: true, comment: '装修程度: 1-毛坯, 2-简装, 3-精装' },
        towards: { type: DataTypes.STRING, allowNull: true, comment: '朝向' },
        type: { type: DataTypes.INTEGER, allowNull: true, comment: '类型' },
        
        // 房屋配置，JSON数组
        houseconfig: {
            type: DataTypes.JSON,
            allowNull: true,
            comment: '房屋配置，如家电家具等',
        },
        
        // 图片和标签
        banner_images: {
            type: DataTypes.JSON,
            allowNull: true,
            comment: '房屋图片地址数组',
        },
        labelconfig: {
            type: DataTypes.JSON,
            allowNull: true,
            comment: '房屋标签配置',
        },
        
        // 联系人信息
        person_name: {
            type: DataTypes.STRING,
            allowNull: true,
            comment: '联系人姓名',
        },
        person_mobile: {
            type: DataTypes.STRING,
            allowNull: true,
            comment: '联系人电话',
        },
        
        // 房屋信息类型
        info_type: {
            type: DataTypes.STRING,
            allowNull: false,
            comment: '信息类型: rent-出租, sell-出售, shop-商铺, ask-求租求购',
        },
        
        // 其他属性
        status: {
            type: DataTypes.INTEGER,
            defaultValue: 1,
            comment: '状态: 0-下架, 1-上架',
        },
        is_top: {
            type: DataTypes.INTEGER,
            defaultValue: 0,
            comment: '是否置顶: 0-否, 1-是',
        },
    }, {
        tableName: 'houses',
        timestamps: true, // 自动维护 createdAt、updatedAt 字段
        paranoid: true,   // 启用 deletedAt 软删除
        deletedAt: 'deletedAt', // 软删除字段重命名
        underscored: true, // 开启下划线命名风格
        charset: 'utf8mb4', // 指定字符集
        collate: 'utf8mb4_general_ci', // 使用 utf8mb4 字符集的排序规则
        comment: '房产信息表',
        
        // 添加虚拟字段
        getterMethods: {
            // 装修程度文本
            decoration_text() {
                const decorationMap = {
                    1: '毛坯',
                    2: '简装',
                    3: '精装'
                };
                return decorationMap[this.decoration] || '未知';
            },
            // 类型文本
            type_text() {
                const typeMap = {
                    1: '普通住宅',
                    2: '公寓',
                    3: '别墅',
                    4: '商铺',
                    5: '写字楼',
                    6: '其他'
                };
                return typeMap[this.type] || '未知';
            },
            // 创建时间文本
            createtime_text() {
                return this.createdAt ? new Date(this.createdAt).toLocaleString() : '';
            }
        }
    });
};